/**
 * @file ecf2m.h
 * @brief 基于二元扩展域的椭圆曲线运算
 * @license BSD
 */

//#ifndef SM_ECF2M_H
//#define SM_ECF2M_H

#pragma once

#include "uinteger.h"
#include "ec.h"

#ifdef __cplusplus
extern "C" {
#endif

/** y^2 + x*y = x^3 + a*x^2 + b mod m*/
typedef struct ECF2mWork_st {
	ECWork_HEAD;
	UInteger m;
	UInteger a;
	UInteger b;
} ECF2mWork;


void ECF2m_Initialize(ECF2mWork *ec, size_t size, const uint8_t *m, const uint8_t *a, const uint8_t *b);



#ifdef __cplusplus
}	// extern "C" {
#endif
